import App from './App'
import { isLoggedIn } from './utils/auth.js'
import { initConfig } from './utils/config.js'

// 初始化应用配置
initConfig();

// 定义需要登录才能访问的页面路径
const AUTH_PAGES = [
  '/pages/user/user',
  '/pages/order/order',
  '/pages/mycoupon/mycoupon',
  '/pages/balance/balance',
  '/pages/recharge/recharge',
  '/pages/reserve/reserve'
]

// 添加全局导航拦截器
uni.addInterceptor('navigateTo', {
  invoke(e) {
    return checkLoginStatus(e.url)
  }
})

uni.addInterceptor('switchTab', {
  invoke(e) {
    return checkLoginStatus(e.url)
  }
})

uni.addInterceptor('redirectTo', {
  invoke(e) {
    return checkLoginStatus(e.url)
  }
})

uni.addInterceptor('reLaunch', {
  invoke(e) {
    return checkLoginStatus(e.url)
  }
})

// 登录状态检查
function checkLoginStatus(url) {
  // 提取路径部分
  const path = url.split('?')[0]
  
  // 检查是否需要登录的页面
  if (AUTH_PAGES.some(item => path.indexOf(item) !== -1)) {
    // 需要登录
    if (!isLoggedIn()) {
      // 未登录时跳转到登录页
      uni.navigateTo({
        url: '/pages/login/login'
      })
      return false
    }
  }
  return true
}

// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
  ...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif